package edu.eas.admin.service;

import edu.eas.common.api.CommonResult;
import edu.eas.common.domain.UserDto;
import edu.eas.common.dto.AdminParam;
import edu.eas.common.dto.MenuNode;
import edu.eas.common.pojo.Admin;
import edu.eas.common.pojo.Role;

import java.util.List;

/**
 * @author cql
 */
public interface AdminService {

    /**
     * 获取用户信息
     *
     * @param username
     * @return
     */
    UserDto loadUserByUsername(String username);

    /**
     * 根据用户名获取后台管理员
     *
     * @param username
     * @return
     */
    Admin getAdminByUsername(String username);


    /**
     * 获取用户对应的角色
     *
     * @param adminId
     * @return
     */
    List<Role> getRoleList(Long adminId);

    /**
     * 登录功能
     *
     * @param username
     * @param password
     * @return
     */
    CommonResult login(String username, String password);

    /**
     * 获取当前登录后台用户
     *
     * @return
     */
    Admin getCurrentAdmin();

    /**
     * 分页获取用户列表
     *
     * @param pageSize
     * @param pageNum
     * @param username
     * @param status
     * @return
     */
    List<Admin> list(Integer pageSize, Integer pageNum, String username, Integer status);

    /**
     * 新增用户
     *
     * @param param
     * @return
     */
    int create(AdminParam param);

    /**
     * 更新
     *
     * @param adminId
     * @param param
     * @return
     */
    int update(Long adminId, AdminParam param);

    /**
     * 根据主键获取用户信息
     *
     * @param adminId
     * @return
     */
    Admin getAdminByPrimaryKey(Long adminId);

    /**
     * 修改用户状态
     *
     * @param admin
     * @return
     */
    int changeStatus(Admin admin);

    /**
     * 批量移除用户
     *
     * @param adminIds
     * @return
     */
    int deleteAdminByIds(Long[] adminIds);

    /**
     * 重置密码
     *
     * @param admin
     * @return
     */
    int resetPwd(Admin admin);

    /**
     * 获取用户的菜单信息
     *
     * @param adminId
     * @return
     */
    List<MenuNode> selectMenuTree(Long adminId);

}
